草庐IT

Java Swingworker 和多线程

全部标签

c++线程,重复/缺少线程

我正在尝试编写一个程序,同时从“仓库”中添加和删除项目。我有一个处理“仓库”操作的“监视器”类:classMonitor{private:mutexm;condition_variablecv;vectorS;intcounter=0;boolbusy=false;;public:voidadd(Computerc,intindex){unique_locklock(m);if(busy)cout线程是这样创建的:voiddoThreadStuff(vectorP,vectorR,Monitor&S){intPcount=P.size();vectormyThreads;myThrea

c++ - C++ 中的简单多线程服务器?

我想编写一个简单的服务器应用程序,它将从客户端应用程序获取命令并在单独的线程中运行这些命令。我正在查看serverclassindlib.有没有人有使用这个的经验?它与使用Boost的Asio相比如何?ExampleofserverindlibExamplesofclient/serverinBoostAsio 最佳答案 BoostAsio可以很容易地做到这一点。看看theexamplesintheHighscoretutorial,它展示了如何使用Boost进行多线程异步输入/输出。#include#include#include

c++ - ExitThread 与允许线程函数正常退出 - C++

我的应用程序有一个使用CreateThread创建的线程。从所述线程中调用ExitThread和允许线程正常退出(即到达线程函数的末尾)之间有什么区别?我正在使用C++和VisualStudio2008。谢谢。 最佳答案 其实有一点很重要:...,在C++代码中,线程在调用任何析构函数或执行任何其他自动清理之前退出。因此,在C++代码中,您应该从线程函数返回(编辑Source) 关于c++-ExitThread与允许线程函数正常退出-C++,我们在StackOverflow上找到一个类似

c++ - 线程安全和位域

我知道位域依赖于编译器,但我没有找到有关最新g++和VisualC++2010位域线程安全的文档。位域成员的操作是原子的吗? 最佳答案 不幸的是,“线程安全”在编程中是一个非常过载的术语。如果您指的是对位域的原子访问,答案是否定的(至少在我所知道的所有处理器上是这样)。您可以原子访问32位机器上的32位内存位置,但这仅意味着您将读取或写入整个32位值。这并不意味着另一个线程不会做同样的事情。如果您想要停止,您可能需要同步。如果您指的是对位域的同步访问,那么答案也是否定的,除非您将访问包装在更高级别的同步原语(通常基于原子操作)中。简

c++ - 如果我只需要它在其他线程中的值,我是否应该在一个线程中锁定一个变量,如果我不这样做,为什么它会起作用?

我知道thisquestion,但我相信我的担忧非常不同。我最近使用线程和OpenGL创建了一个SDL应用程序。我有一个循环运行的线程,它不断更新我绘制到屏幕上的对象的状态。状态很简单,就是一个boolean数组(数组值为true的时候画,为false的时候不画)。目前,我的任何变量都没有互斥锁,一切正常。即使在一次绘制之间只更新了状态数组的一半,帧率也比更新率高得多(或至少等于),因此更新一半的状态是可以接受的。现在,我最初开始在使用中断的嵌入式系统上研究与此类似的想法。每隔一段时间,就会触发一个中断,更新状态数组,然后继续执行。现在我在多核台式机上,同时更新阵列,我想知道为什么没有

c++ - 命名空间中的全局变量 - 线程中的值不同

考虑以下情况:2个不同的网络端口,通过boost::asio每个都有自己的线程1个端口正在接收和处理数据-classDataConnection包裹在std::thread中1个端口用于发送统计信息classStatConnection也包裹在std::thread中为了计算连接数(和其他小数据片段),我的想法是使用staticnamespace中的变量喜欢:#includenamespaceapp{namespacestatus{staticstd::atomiccounter=0;}}这适用于DataConnection类(class)。这里我递增counter在c'tor中并查看

c++ - 为什么 Win32 没有僵尸线程问题?

只知道如果我们用默认的pthread_attr_t调用pthread_create,那么Posix会保留退出的线程信息供其他线程查询,如果我们有僵尸线程泄漏没有调用pthread_join。但据我所知,在Windows平台上,您不需要在线程存在后调用WaitForSingleObject或GetExitCodeThread。那么Win32如何处理僵尸线程问题,会不会出现资源泄露? 最佳答案 在Windows上,线程是HANDLE从用户模式引用的内核对象。内核对象的一个​​属性是它"remainsinmemoryaslongasatl

c++ - 如何在C++中设置线程数

我使用std::sort编写了以下用于多线程排序的多线程程序。在我的程序中,grainSize是一个参数。由于grainSize或可以生成的线程数是系统相关的功能。因此,我没有得到应该将grainSize设置为的最佳值是多少?我在Linux上工作?intcompare(constchar*,constchar*){//somecomplexuserdefinedlogic}voidmultThreadedSort(vector::iteratordata,intlen,intgrainsize){if(lenitems;intgrainSize=10;multThreadedSort(

C++ 线程 : what does join do exactly?

这个问题在这里已经有了答案:Whatdoesstd::thread.join()do?(4个答案)关闭6年前。以下代码来自Dashstd::thread的示例.#include#include#includevoidfoo(){//simulateexpensiveoperationstd::this_thread::sleep_for(std::chrono::seconds(1));}voidbar(){//simulateexpensiveoperationstd::this_thread::sleep_for(std::chrono::seconds(1));}intmain(

java - JNI线程模型?

当我从Java调用C/C++时,JavaVM或JNI是否会创建一个新线程来运行C/C++代码,而我的Java线程正在等待?我问这个是因为我的C/C++代码在GPU上运行某些东西,我需要检查特定的缓冲区以取回结果。获得结果后,我需要再次调用我的Java函数。所以我在考虑在C++端创建一个线程,该线程不断检查缓冲区,一旦有一些数据可用,就会回调Java端。 最佳答案 JNI不会在后台创建任何新线程。native函数与调用native函数的java方法在同一线程中执行。反之亦然,当native代码调用java方法时,java方法与调用该方